home *** CD-ROM | disk | FTP | other *** search
/ Revista do CD-ROM 101 / CD-ROM 101.iso / compl / maya5ple / Install_MayaPLE5_English.exe / Maya / Data1.cab / performPolyAutoProj.mel < prev    next >
Encoding:
Text File  |  2003-07-17  |  10.9 KB  |  376 lines

  1. // Copyright (C) 1997-2002 Alias|Wavefront,
  2. // a division of Silicon Graphics Limited.
  3. //
  4. // The information in this file is provided for the exclusive use of the
  5. // licensees of Alias|Wavefront.  Such users have the right to use, modify,
  6. // and incorporate this code into other products for purposes authorized
  7. // by the Alias|Wavefront license agreement, without fee.
  8. //
  9. // ALIAS|WAVEFRONT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  10. // INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
  11. // EVENT SHALL ALIAS|WAVEFRONT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  12. // CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
  13. // DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  14. // TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  15. // PERFORMANCE OF THIS SOFTWARE.
  16. //
  17. //
  18. //  Alias|Wavefront Script File
  19. //  MODIFY THIS AT YOUR OWN RISK
  20. //
  21. //  Creation Date:  4 April 1997
  22. //
  23. //  Procedure Name:
  24. //      performPolyAutoProj
  25. //
  26. //  Description:
  27. //        
  28. //         
  29. //  Input Arguments:
  30. //        $option : Whether to set the options to default values.
  31. //  Return Value:
  32. //        command string iff $option==2
  33. //
  34.  
  35. //
  36. // Initialize optionVars for polyAutoProj:
  37. // 
  38. proc setOptionVars (
  39.     string        $prefix, 
  40.     int            $forceFactorySettings,
  41.     string        $vars[]
  42. )
  43. {
  44.     string $varName;
  45.  
  46.     // Must match $vars
  47.     int    $intValues[]= { 3, 1, 1, 2, 0, 1 };
  48.  
  49.     for ( $i = size($vars) ; $i-- ; )
  50.     {
  51.         $varName = ($prefix + $vars[$i]);
  52.         if ($forceFactorySettings || !`optionVar -exists $varName`)
  53.             optionVar -intValue $varName $intValues[$i];
  54.     }
  55.  
  56.     $varName = ($prefix + "eg");
  57.     if ($forceFactorySettings || !`optionVar -exists $varName`)
  58.         optionVar -floatValue $varName .2;
  59.  
  60.     // Also add the map name
  61.     $varName = ($prefix + "uvSetName");
  62.     if ($forceFactorySettings || !`optionVar -exists $varName`)
  63.         optionVar -stringValue $varName "uvSet1";
  64. }
  65.  
  66. global proc performPolyAutoProjSetup (string $parent, int $forceFactorySettings)
  67. {
  68.     string $prefix = "polyAutoProj";
  69.     string $intVars[] ={"p", "o", "sc", "l", "cm", "ibd"};
  70.     string $varName;
  71.     float  $presets[] = {.1, .2, .4, .8, 1.6, 3.2};
  72.     int    $i;
  73.  
  74.     setOptionVars($prefix, $forceFactorySettings, $intVars);
  75.     setParent $parent;
  76.     
  77.     $varName = ($prefix + $intVars[0]);
  78.     optionMenuGrp -e -sl `optionVar -query $varName` $varName;
  79.  
  80.     $varName = ($prefix + $intVars[1]);
  81.     radioButtonGrp -e -sl (`optionVar -query $varName`+1) $varName;
  82.  
  83.     $varName = ($prefix + $intVars[2]);
  84.     radioButtonGrp -e -sl (`optionVar -query $varName`+1) $varName;
  85.  
  86.     $varName = ($prefix + $intVars[3]);
  87.     radioButtonGrp -e -sl `optionVar -query $varName` $varName;
  88.  
  89.     $varName = ($prefix + "eg");
  90.     float $fval = `optionVar -q $varName`;
  91.     floatSliderGrp -e -v $fval $varName;
  92.  
  93.     // See if the value corresponds to one of the presets.
  94.     $varName = ($prefix + "egPresets");
  95.     optionMenuGrp -e -sl 1 $varName;
  96.     for ($i = size($presets) ; $i-- ; )
  97.     {
  98.         if ($fval == $presets[$i])
  99.         {
  100.             optionMenuGrp -e -sl ($i+2) $varName;
  101.             break;
  102.         }
  103.     }
  104.  
  105.     $varName = ($prefix + $intVars[4]);
  106.     int $val = `optionVar -query $varName`;
  107.     checkBoxGrp -e -value1 $val $varName;
  108.     $varName = ($prefix + "uvSetName");
  109.     textFieldGrp -e -en $val -tx `optionVar -q $varName` $varName; 
  110.  
  111.     $varName = ($prefix + $intVars[5]);
  112.     checkBoxGrp -e -v1 `optionVar -query $varName` $varName;
  113. }
  114.  
  115. global proc performPolyAutoProjCallback (string $parent, int $doIt)
  116. {
  117.     string $prefix = "polyAutoProj";
  118.     string $intVars[] ={"p", "o", "sc", "l", "cm", "ibd"};
  119.     string $varName;
  120.  
  121.     setParent $parent;
  122.     
  123.     $varName = ($prefix + $intVars[0]);
  124.     optionVar -intValue $varName `optionMenuGrp -q -sl $varName`;
  125.     
  126.     $varName = ($prefix + $intVars[1]);
  127.     optionVar -intValue $varName (`radioButtonGrp -q -sl $varName`-1);
  128.     
  129.     $varName = ($prefix + $intVars[2]);
  130.     optionVar -intValue $varName (`radioButtonGrp -q -sl $varName`-1);
  131.     
  132.     $varName = ($prefix + $intVars[3]);
  133.     optionVar -intValue $varName `radioButtonGrp -q -sl $varName`;
  134.     
  135.     $varName = ($prefix + $intVars[4]);
  136.     optionVar -intValue $varName `checkBoxGrp -q -v1 $varName`;
  137.  
  138.     $varName = ($prefix + $intVars[5]);
  139.     optionVar -intValue $varName `checkBoxGrp -q -v1 $varName`;
  140.  
  141.     $varName = ($prefix + "uvSetName");
  142.     optionVar -stringValue $varName `textFieldGrp -q -tx $varName`; 
  143.  
  144.     $varName = ($prefix + "eg");
  145.     optionVar -floatValue $varName `floatSliderGrp -q -v $varName`;
  146.  
  147.     if ($doIt) 
  148.     {
  149.         performPolyAutoProj 0;
  150.         addToRecentCommandQueue "performPolyAutoProj 0" "PolyAutoProj";
  151.     }
  152. }
  153.  
  154. global proc polyAutoSpacingPresets()
  155. {
  156.     int $item = `optionMenuGrp -q -sl "polyAutoProjegPresets"`-2;
  157.     float  $presets[] = {.1, .2, .4, .8, 1.6, 3.2};
  158.  
  159.     if ($item>=0 && $item<6)
  160.         floatSliderGrp -e -v $presets[$item] "polyAutoProjeg";
  161. }
  162.  
  163. proc polyAutoProjOptions (string $prefix, string $intVars[])
  164. {
  165.     string $commandName = "performPolyAutoProj";
  166.     string $callback = ($commandName + "Callback");
  167.     string $setup = ($commandName + "Setup");
  168.     string $varName;
  169.  
  170.     string $layout = getOptionBox();
  171.     setParent $layout;
  172.     setUITemplate -pushTemplate DefaultTemplate;
  173.     waitCursor -state 1;
  174.     
  175.     string $parent = `columnLayout -adjustableColumn 1`;
  176.  
  177.     $varName = ($prefix + $intVars[0]);
  178.  
  179.     optionMenuGrp -l "Planes" $varName;
  180.     menuItem -l "4";
  181.     menuItem -l "5";
  182.     menuItem -l "6";
  183.     menuItem -l "8";
  184.     menuItem -l "12";
  185.     setParent -m ..;
  186.  
  187.     $varName = ($prefix + $intVars[1]);
  188.     radioButtonGrp -l "Optimize" -nrb 2
  189.         -l1 "Less Distortion" 
  190.         -l2 "Fewer Pieces" $varName;
  191.  
  192.     separator;
  193.  
  194.     $varName = ($prefix + $intVars[3]);
  195.     $gapName = ($prefix + "eg");
  196.     $menuName = ($prefix + "egPresets");
  197.     string $grayCmd = 
  198.         "{ int $tmp = `radioButtonGrp -q -sl "+$varName + "` == 2;" +
  199.         "  floatSliderGrp -e -en $tmp "+$gapName+";" +
  200.         "  optionMenuGrp -e -en $tmp "+$menuName+";}";
  201.     radioButtonGrp -l "Layout" -nrb 2 -cc $grayCmd
  202.         -l1 "Along U" 
  203.         -l2 "Into Square" $varName;
  204.  
  205.     $varName = ($prefix + $intVars[2]);
  206.     radioButtonGrp -l "Scale" -nrb 3
  207.         -l1 "None"
  208.         -l2 "Uniform"
  209.         -l3 "Stretch to Square" $varName;
  210.  
  211.     separator;
  212.  
  213.     optionMenuGrp -l "Spacing Presets" -cc polyAutoSpacingPresets $menuName;
  214.     menuItem -l " Custom";
  215.     menuItem -l "1024 Map";
  216.     menuItem -l " 512 Map";
  217.     menuItem -l " 256 Map";
  218.     menuItem -l " 128 Map";
  219.     menuItem -l "  64 Map";
  220.     menuItem -l "  32 Map";
  221.     setParent -m ..;
  222.  
  223.     string $cmd = ("optionMenuGrp -e -sl 1 " + $menuName);
  224.     floatSliderGrp -l "Percentage Space" -min 0 -max 5 -cc $cmd $gapName;
  225.  
  226.     separator;
  227.  
  228.     $varName = ($prefix + $intVars[5]);
  229.     checkBoxGrp -l1 "Insert Before Deformers" $varName;
  230.  
  231.     $varName = ($prefix + $intVars[4]);
  232.     $textName = ($prefix + "uvSetName");
  233.     string $grayCmd = 
  234.         "{ int $tmp = `checkBoxGrp -q -v1 "+$varName + "`;" +
  235.         "  textFieldGrp -e -en $tmp "+$textName+";}";
  236.     checkBoxGrp -label1 "Create New UV Set" -cc $grayCmd $varName;
  237.     textFieldGrp -label "UV Set Name: " $textName;
  238.  
  239.     waitCursor -state 0;
  240.     setUITemplate -popTemplate;
  241.  
  242.     string $applyBtn = getOptionBoxApplyBtn();
  243.     button -edit -label "Project"
  244.            -command ($callback + " " + $parent + " " + 1) $applyBtn;
  245.     string $saveBtn = getOptionBoxSaveBtn();
  246.     button -edit 
  247.         -command ($callback + " " + $parent + " " + 0 + "; hideOptionBox")
  248.         $saveBtn;
  249.     string $resetBtn = getOptionBoxResetBtn();
  250.     button -edit 
  251.         -command ($setup + " " + $parent + " " + 1) $resetBtn;
  252.  
  253.     setOptionBoxTitle("Polygon Automatic Mapping Options");
  254.  
  255.     setOptionBoxHelpTag( "AutomaticMapping" );
  256.  
  257.     eval (($setup + " " + $parent + " " + 0));
  258.  
  259.     showOptionBox();
  260. }
  261.  
  262. proc string createCurrentShader ()
  263. {
  264.     global string $polyTextureColorShader;
  265.     string $shader;
  266.     string $shaderType="lambert";
  267.     string $textureName="checker";
  268.     if (`optionVar -q polyCreateShaderWithMapping` == 0) 
  269.         return "";
  270.     string $shader=`evalEcho "sets -n texturedFacets -em -r true -nss true"`;
  271.     if ($shader != "") {
  272.         evalEcho ("partition -e -addSet renderPartition " + $shader);
  273.         string $shad[];
  274.         if ($polyTextureColorShader != "")
  275.             $shad=`ls -showType $polyTextureColorShader`;
  276.         if ($polyTextureColorShader == "" || size($shad) == 0) {
  277.             string $texture[]=`ls -showType defaultPolygonTexture`;
  278.             if (size($texture) == 0)
  279.                 $texture[0]=`evalEcho ("shadingNode -asTexture " 
  280.                         + $textureName + " -n defaultPolygonTexture")`;            
  281.             $polyTextureColorShader=`evalEcho ("shadingNode -asShader " 
  282.                         + $shaderType + " -n defaultPolygonShader")`;
  283.             evalEcho ("connectAttr " + $texture[0] + ".outColor " 
  284.                     + $polyTextureColorShader + ".color");
  285.             // creating a node selects it: we don't want that...
  286.             select -d $texture[0] $polyTextureColorShader;
  287.         }
  288.         $shad=`ls -showType $polyTextureColorShader`;
  289.         if ($polyTextureColorShader != "" && size($shad) != 0)
  290.             evalEcho ("connectAttr -f " + $polyTextureColorShader + ".outColor " 
  291.                                 + $shader + ".surfaceShader");
  292.         else warning "Could not create the default polygons shader";
  293.     } else warning "Could not create a new set to hold the faces.";
  294.     return $shader;
  295. }
  296.  
  297. global proc string performPolyAutoProj (int $option)
  298. {
  299.     string $prefix = "polyAutoProj";
  300.     string $intVars[] ={"p", "o", "sc", "l", "cm", "ibd"};
  301.     string $cmd="";
  302.  
  303.     switch ($option) 
  304.     {
  305.         case 0:
  306.         string $varName;
  307.         int $ival;
  308.         setOptionVars($prefix, false, $intVars);
  309.         $cmd = "polyAutoProjection";
  310.         for ( $i = size($intVars) ; $i-- > 1; )
  311.         {
  312.             $varName = ($prefix + $intVars[$i]);
  313.             $ival = `optionVar -query $varName`;
  314.             $cmd = $cmd + " -" + $intVars[$i] + " " + $ival;
  315.         }
  316.  
  317.         $varName = ($prefix + $intVars[0]);
  318.         $ival = `optionVar -query $varName`;
  319.         int $numVal[] = {4, 5, 6, 8, 12};
  320.         $cmd = $cmd + " -" + $intVars[0] + " " + $numVal[$ival-1];
  321.  
  322.         $varName = ($prefix + $intVars[4]);
  323.         int $createNewUVSet = `optionVar -query $varName`;
  324.         if ($createNewUVSet)
  325.         {
  326.             $varName = ($prefix + "uvSetName");
  327.             string $sval = `optionVar -query $varName`;
  328.             if ($sval != "")
  329.                 $cmd = $cmd + " -uvSetName " + $sval;
  330.         }
  331.  
  332.         $varName = ($prefix + "eg");
  333.         float $fval = `optionVar -query $varName`;
  334.         $cmd = $cmd + " -ps " + $fval;
  335.  
  336.         polyPerformAction $cmd "f" 0;    
  337.  
  338.         string $totalSel[] = `ls -sl`;
  339.         
  340.         // Set current UV set
  341.         if($createNewUVSet) {
  342.             string $filteredSel[];
  343.             $filteredSel=`filterExpand -ex false -sm 34 $totalSel`;
  344.             string $setCurrent = "polyUVSet -luv";
  345.             int $i;
  346.             for($i = 0; $i < size($filteredSel); $i++) {
  347.                 $setCurrent += (" " + $filteredSel[$i]);
  348.             }
  349.             evalEcho $setCurrent;
  350.         }
  351.         
  352.         string $shader=`createCurrentShader`;
  353.         // Update shader's set.
  354.         if( $shader != "") {
  355.             $cmd=("sets -e -fe " + $shader);
  356.             int $i;
  357.             for($i=0; $i < size($totalSel); $i++)
  358.                 $cmd=($cmd + " " + $totalSel[$i]);
  359.             evalEcho $cmd;
  360.         }
  361.  
  362.         // Set selection
  363.         evalEcho `select -r $totalSel`;
  364.  
  365.         break;
  366.  
  367.         case 1:
  368.             polyAutoProjOptions($prefix, $intVars);
  369.             break;
  370.         case 2:
  371.             $cmd="performPolyAutoProj 0";
  372.             break;
  373.     }
  374.     return $cmd;
  375. }
  376.